

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0499 */
/* Compiler settings for datacontainer.idl:
    Oicf, W1, Zp8, env=Win32 (32b run)
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING(  )

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 500
#endif

/* verify that the <rpcsal.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCSAL_H_VERSION__
#define __REQUIRED_RPCSAL_H_VERSION__ 100
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __datacontainer_h__
#define __datacontainer_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __IWMSDataSourcePlugin_FWD_DEFINED__
#define __IWMSDataSourcePlugin_FWD_DEFINED__
typedef interface IWMSDataSourcePlugin IWMSDataSourcePlugin;
#endif 	/* __IWMSDataSourcePlugin_FWD_DEFINED__ */


#ifndef __IWMSDataSourcePluginCallback_FWD_DEFINED__
#define __IWMSDataSourcePluginCallback_FWD_DEFINED__
typedef interface IWMSDataSourcePluginCallback IWMSDataSourcePluginCallback;
#endif 	/* __IWMSDataSourcePluginCallback_FWD_DEFINED__ */


#ifndef __IWMSDataContainer_FWD_DEFINED__
#define __IWMSDataContainer_FWD_DEFINED__
typedef interface IWMSDataContainer IWMSDataContainer;
#endif 	/* __IWMSDataContainer_FWD_DEFINED__ */


#ifndef __IWMSDataContainerCallback_FWD_DEFINED__
#define __IWMSDataContainerCallback_FWD_DEFINED__
typedef interface IWMSDataContainerCallback IWMSDataContainerCallback;
#endif 	/* __IWMSDataContainerCallback_FWD_DEFINED__ */


#ifndef __IWMSDirectory_FWD_DEFINED__
#define __IWMSDirectory_FWD_DEFINED__
typedef interface IWMSDirectory IWMSDirectory;
#endif 	/* __IWMSDirectory_FWD_DEFINED__ */


/* header files for imported files */
#include "objidl.h"
#include "WMSBuffer.h"
#include "WMSContext.h"
#include "DataContainerVersion.h"
#include "wmsPacket.h"

#ifdef __cplusplus
extern "C"{
#endif 


/* interface __MIDL_itf_datacontainer_0000_0000 */
/* [local] */ 

//*****************************************************************************
//
// Microsoft Windows Media
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// Automatically generated by Midl from datacontainer.idl
//
// DO NOT EDIT THIS FILE.
//
//*****************************************************************************






#define WMS_DATA_CONTAINER_NONSEEKABLE 0xFFFFFFFFFFFFFFFF
EXTERN_GUID( IID_IWMSDataSourcePlugin, 0xE1CD3525,0x03D7,0x11d2,0x9E,0xED,0x00,0x60,0x97,0xD2,0xD7,0xCF );
EXTERN_GUID( IID_IWMSDataSourcePluginCallback, 0xE1CD3526,0x03D7,0x11d2,0x9E,0xED,0x00,0x60,0x97,0xD2,0xD7,0xCF );
EXTERN_GUID( IID_IWMSDataContainer, 0xE6EE9A13,0x0FCC,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );
EXTERN_GUID( IID_IWMSDataContainerCallback, 0x2E34AB82,0x0D3D,0x11d2,0x9E,0xEE,0x00,0x60,0x97,0xD2,0xD7,0xCF );
EXTERN_GUID( IID_IWMSDirectory, 0x6fa365e7, 0xe8b9, 0x437a, 0x8c, 0x4b, 0x65, 0x52, 0xdf, 0xbb, 0xc, 0x57 );
EXTERN_GUID( IID_IWMSUnknownFormat, 0x9b6c9e51, 0x4813, 0x11d2, 0x9e, 0xff, 0x00, 0x60, 0x97, 0xd2, 0xd7, 0xcf );
EXTERN_GUID( IID_IWMSDirectoryFormat, 0x7408ceb0, 0x3a5a, 0x41b6, 0xa5, 0xec, 0x9a, 0x4e, 0x81, 0x1c, 0x96, 0x73 );
EXTERN_GUID( IID_IWMSPlaylistSmilFormat, 0xc34294ea, 0xe111, 0x4fb2, 0xbe, 0x6b, 0xec, 0x68, 0x6a, 0x1a, 0x97, 0x57 );
typedef /* [public] */ 
enum WMS_DATA_CONTAINER_OPEN_FLAGS
    {	WMS_DATA_CONTAINER_READ_ACCESS	= 0x1,
	WMS_DATA_CONTAINER_WRITE_ACCESS	= 0x2,
	WMS_DATA_CONTAINER_CREATE_NEW_CONTAINER	= 0x4,
	WMS_DATA_CONTAINER_ALLOW_BUFFER_IO	= 0x8,
	WMS_DATA_CONTAINER_SHARED_SOURCE	= 0x10
    } 	WMS_DATA_CONTAINER_OPEN_FLAGS;

typedef /* [public] */ 
enum WMS_DIRECTORY_ENTRY_FLAGS
    {	WMS_DIRECTORY_ENTRY_IS_DIRECTORY	= 0x1
    } 	WMS_DIRECTORY_ENTRY_FLAGS;

typedef /* [public] */ 
enum WMS_DATA_CONTAINER_GETINFO_VALUES
    {	WMS_DATA_CONTAINER_SIZE	= 1,
	WMS_DATA_CONTAINER_MAX_SUPPORTED_READ_SIZE	= 2
    } 	WMS_DATA_CONTAINER_GETINFO_VALUES;

typedef /* [public] */ 
enum WMS_DATA_CONTAINER_GETINFO_FLAGS
    {	WMS_SEEKABLE_CONTAINER	= 0x1,
	WMS_LOCAL_DATA_CONTAINER	= 0x2
    } 	WMS_DATA_CONTAINER_GETINFO_FLAGS;

typedef /* [public] */ 
enum WMS_DATA_CONTAINER_ATTRIBUTES
    {	WMS_DATA_CONTAINER_SUPPORTS_ENUMERATION	= 0x1
    } 	WMS_DATA_CONTAINER_ATTRIBUTES;

typedef unsigned __int64 QWORD;



extern RPC_IF_HANDLE __MIDL_itf_datacontainer_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_datacontainer_0000_0000_v0_0_s_ifspec;

#ifndef __IWMSDataSourcePlugin_INTERFACE_DEFINED__
#define __IWMSDataSourcePlugin_INTERFACE_DEFINED__

/* interface IWMSDataSourcePlugin */
/* [helpstring][version][uuid][unique][object] */ 


EXTERN_C const IID IID_IWMSDataSourcePlugin;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("E1CD3525-03D7-11d2-9EED-006097D2D7CF")
    IWMSDataSourcePlugin : public IUnknown
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDataSourceAttributes( 
            /* [out] */ __RPC__out DWORD *pdwFlags) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetRootDirectories( 
            /* [in] */ __RPC__deref_in_opt LPWSTR *pstrRootDirectoryList,
            /* [in] */ DWORD dwMaxRoots,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OpenDataContainer( 
            /* [in] */ __RPC__in_opt IWMSCommandContext *pCommandContext,
            /* [in] */ __RPC__in_opt IWMSContext *pUserContext,
            /* [in] */ __RPC__in_opt IWMSContext *pPresentationContext,
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSBufferAllocator *pBufferAllocator,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OpenDirectory( 
            /* [in] */ __RPC__in_opt IWMSCommandContext *pCommandContext,
            /* [in] */ __RPC__in_opt IWMSContext *pUserContext,
            /* [in] */ __RPC__in_opt IWMSContext *pPresentationContext,
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSBufferAllocator *pBufferAllocator,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE DeleteDataContainer( 
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDataContainerVersion( 
            /* [in] */ __RPC__in_opt IWMSCommandContext *pCommandContext,
            /* [in] */ __RPC__in_opt IWMSContext *pUserContext,
            /* [in] */ __RPC__in_opt IWMSContext *pPresContext,
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE CreateDataSourceDirectory( 
            /* [in] */ __RPC__in_opt IWMSCommandContext *pCommandContext,
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE DeleteDirectory( 
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWMSDataSourcePluginVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWMSDataSourcePlugin * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWMSDataSourcePlugin * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWMSDataSourcePlugin * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDataSourceAttributes )( 
            IWMSDataSourcePlugin * This,
            /* [out] */ __RPC__out DWORD *pdwFlags);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetRootDirectories )( 
            IWMSDataSourcePlugin * This,
            /* [in] */ __RPC__deref_in_opt LPWSTR *pstrRootDirectoryList,
            /* [in] */ DWORD dwMaxRoots,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OpenDataContainer )( 
            IWMSDataSourcePlugin * This,
            /* [in] */ __RPC__in_opt IWMSCommandContext *pCommandContext,
            /* [in] */ __RPC__in_opt IWMSContext *pUserContext,
            /* [in] */ __RPC__in_opt IWMSContext *pPresentationContext,
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSBufferAllocator *pBufferAllocator,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OpenDirectory )( 
            IWMSDataSourcePlugin * This,
            /* [in] */ __RPC__in_opt IWMSCommandContext *pCommandContext,
            /* [in] */ __RPC__in_opt IWMSContext *pUserContext,
            /* [in] */ __RPC__in_opt IWMSContext *pPresentationContext,
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSBufferAllocator *pBufferAllocator,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *DeleteDataContainer )( 
            IWMSDataSourcePlugin * This,
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDataContainerVersion )( 
            IWMSDataSourcePlugin * This,
            /* [in] */ __RPC__in_opt IWMSCommandContext *pCommandContext,
            /* [in] */ __RPC__in_opt IWMSContext *pUserContext,
            /* [in] */ __RPC__in_opt IWMSContext *pPresContext,
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *CreateDataSourceDirectory )( 
            IWMSDataSourcePlugin * This,
            /* [in] */ __RPC__in_opt IWMSCommandContext *pCommandContext,
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *DeleteDirectory )( 
            IWMSDataSourcePlugin * This,
            /* [in] */ __RPC__in LPWSTR pszContainerName,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSDataSourcePluginCallback *pCallback,
            /* [in] */ QWORD qwContext);
        
        END_INTERFACE
    } IWMSDataSourcePluginVtbl;

    interface IWMSDataSourcePlugin
    {
        CONST_VTBL struct IWMSDataSourcePluginVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWMSDataSourcePlugin_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWMSDataSourcePlugin_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWMSDataSourcePlugin_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWMSDataSourcePlugin_GetDataSourceAttributes(This,pdwFlags)	\
    ( (This)->lpVtbl -> GetDataSourceAttributes(This,pdwFlags) ) 

#define IWMSDataSourcePlugin_GetRootDirectories(This,pstrRootDirectoryList,dwMaxRoots,pCallback,qwContext)	\
    ( (This)->lpVtbl -> GetRootDirectories(This,pstrRootDirectoryList,dwMaxRoots,pCallback,qwContext) ) 

#define IWMSDataSourcePlugin_OpenDataContainer(This,pCommandContext,pUserContext,pPresentationContext,pszContainerName,dwFlags,pBufferAllocator,pCallback,qwContext)	\
    ( (This)->lpVtbl -> OpenDataContainer(This,pCommandContext,pUserContext,pPresentationContext,pszContainerName,dwFlags,pBufferAllocator,pCallback,qwContext) ) 

#define IWMSDataSourcePlugin_OpenDirectory(This,pCommandContext,pUserContext,pPresentationContext,pszContainerName,dwFlags,pBufferAllocator,pCallback,qwContext)	\
    ( (This)->lpVtbl -> OpenDirectory(This,pCommandContext,pUserContext,pPresentationContext,pszContainerName,dwFlags,pBufferAllocator,pCallback,qwContext) ) 

#define IWMSDataSourcePlugin_DeleteDataContainer(This,pszContainerName,dwFlags,pCallback,qwContext)	\
    ( (This)->lpVtbl -> DeleteDataContainer(This,pszContainerName,dwFlags,pCallback,qwContext) ) 

#define IWMSDataSourcePlugin_GetDataContainerVersion(This,pCommandContext,pUserContext,pPresContext,pszContainerName,dwFlags,pCallback,qwContext)	\
    ( (This)->lpVtbl -> GetDataContainerVersion(This,pCommandContext,pUserContext,pPresContext,pszContainerName,dwFlags,pCallback,qwContext) ) 

#define IWMSDataSourcePlugin_CreateDataSourceDirectory(This,pCommandContext,pszContainerName,dwFlags,pCallback,qwContext)	\
    ( (This)->lpVtbl -> CreateDataSourceDirectory(This,pCommandContext,pszContainerName,dwFlags,pCallback,qwContext) ) 

#define IWMSDataSourcePlugin_DeleteDirectory(This,pszContainerName,dwFlags,pCallback,qwContext)	\
    ( (This)->lpVtbl -> DeleteDirectory(This,pszContainerName,dwFlags,pCallback,qwContext) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWMSDataSourcePlugin_INTERFACE_DEFINED__ */


#ifndef __IWMSDataSourcePluginCallback_INTERFACE_DEFINED__
#define __IWMSDataSourcePluginCallback_INTERFACE_DEFINED__

/* interface IWMSDataSourcePluginCallback */
/* [helpstring][version][uuid][unique][object] */ 


EXTERN_C const IID IID_IWMSDataSourcePluginCallback;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("E1CD3526-03D7-11d2-9EED-006097D2D7CF")
    IWMSDataSourcePluginCallback : public IUnknown
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnOpenDataContainer( 
            /* [in] */ HRESULT hr,
            /* [in] */ __RPC__in_opt IWMSDataContainer *pDataContainer,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnOpenDirectory( 
            /* [in] */ HRESULT hr,
            /* [in] */ __RPC__in_opt IWMSDirectory *pDirectory,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnOpenPacketStreamDataContainer( 
            /* [in] */ HRESULT hr,
            /* [in] */ __RPC__in_opt IUnknown *pLiveDataContainer,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnDeleteDataContainer( 
            /* [in] */ HRESULT hr,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnGetDataContainerVersion( 
            /* [in] */ HRESULT hr,
            /* [in] */ __RPC__in_opt IWMSDataContainerVersion *pVersion,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnGetRootDirectories( 
            /* [in] */ HRESULT hr,
            /* [in] */ DWORD dwNumReturnedRoots,
            /* [in] */ DWORD dwTotalNumRoots,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnCreateDirectory( 
            /* [in] */ HRESULT hr,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnDeleteDirectory( 
            /* [in] */ HRESULT hr,
            /* [in] */ QWORD qwContext) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWMSDataSourcePluginCallbackVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWMSDataSourcePluginCallback * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWMSDataSourcePluginCallback * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWMSDataSourcePluginCallback * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnOpenDataContainer )( 
            IWMSDataSourcePluginCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ __RPC__in_opt IWMSDataContainer *pDataContainer,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnOpenDirectory )( 
            IWMSDataSourcePluginCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ __RPC__in_opt IWMSDirectory *pDirectory,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnOpenPacketStreamDataContainer )( 
            IWMSDataSourcePluginCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ __RPC__in_opt IUnknown *pLiveDataContainer,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnDeleteDataContainer )( 
            IWMSDataSourcePluginCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnGetDataContainerVersion )( 
            IWMSDataSourcePluginCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ __RPC__in_opt IWMSDataContainerVersion *pVersion,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnGetRootDirectories )( 
            IWMSDataSourcePluginCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ DWORD dwNumReturnedRoots,
            /* [in] */ DWORD dwTotalNumRoots,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnCreateDirectory )( 
            IWMSDataSourcePluginCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnDeleteDirectory )( 
            IWMSDataSourcePluginCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ QWORD qwContext);
        
        END_INTERFACE
    } IWMSDataSourcePluginCallbackVtbl;

    interface IWMSDataSourcePluginCallback
    {
        CONST_VTBL struct IWMSDataSourcePluginCallbackVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWMSDataSourcePluginCallback_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWMSDataSourcePluginCallback_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWMSDataSourcePluginCallback_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWMSDataSourcePluginCallback_OnOpenDataContainer(This,hr,pDataContainer,qwContext)	\
    ( (This)->lpVtbl -> OnOpenDataContainer(This,hr,pDataContainer,qwContext) ) 

#define IWMSDataSourcePluginCallback_OnOpenDirectory(This,hr,pDirectory,qwContext)	\
    ( (This)->lpVtbl -> OnOpenDirectory(This,hr,pDirectory,qwContext) ) 

#define IWMSDataSourcePluginCallback_OnOpenPacketStreamDataContainer(This,hr,pLiveDataContainer,qwContext)	\
    ( (This)->lpVtbl -> OnOpenPacketStreamDataContainer(This,hr,pLiveDataContainer,qwContext) ) 

#define IWMSDataSourcePluginCallback_OnDeleteDataContainer(This,hr,qwContext)	\
    ( (This)->lpVtbl -> OnDeleteDataContainer(This,hr,qwContext) ) 

#define IWMSDataSourcePluginCallback_OnGetDataContainerVersion(This,hr,pVersion,qwContext)	\
    ( (This)->lpVtbl -> OnGetDataContainerVersion(This,hr,pVersion,qwContext) ) 

#define IWMSDataSourcePluginCallback_OnGetRootDirectories(This,hr,dwNumReturnedRoots,dwTotalNumRoots,qwContext)	\
    ( (This)->lpVtbl -> OnGetRootDirectories(This,hr,dwNumReturnedRoots,dwTotalNumRoots,qwContext) ) 

#define IWMSDataSourcePluginCallback_OnCreateDirectory(This,hr,qwContext)	\
    ( (This)->lpVtbl -> OnCreateDirectory(This,hr,qwContext) ) 

#define IWMSDataSourcePluginCallback_OnDeleteDirectory(This,hr,qwContext)	\
    ( (This)->lpVtbl -> OnDeleteDirectory(This,hr,qwContext) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWMSDataSourcePluginCallback_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_datacontainer_0000_0002 */
/* [local] */ 

typedef /* [public][public] */ struct __MIDL___MIDL_itf_datacontainer_0000_0002_0001
    {
    LPOLESTR pstrName;
    DWORD dwFlags;
    QWORD qwSize;
    } 	WMSDirectoryEntryInfo;



extern RPC_IF_HANDLE __MIDL_itf_datacontainer_0000_0002_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_datacontainer_0000_0002_v0_0_s_ifspec;

#ifndef __IWMSDataContainer_INTERFACE_DEFINED__
#define __IWMSDataContainer_INTERFACE_DEFINED__

/* interface IWMSDataContainer */
/* [helpstring][version][uuid][unique][object] */ 


EXTERN_C const IID IID_IWMSDataContainer;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("E6EE9A13-0FCC-11d2-9EEE-006097D2D7CF")
    IWMSDataContainer : public IUnknown
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetContainerFormat( 
            /* [out] */ __RPC__out GUID *pFormat) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDataSourcePlugin( 
            /* [out] */ __RPC__deref_out_opt IWMSDataSourcePlugin **ppDataSource) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetInfo( 
            /* [in] */ DWORD dwInfoValueId,
            /* [in] */ __RPC__in_opt IWMSDataContainerCallback *pCallback,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Read( 
            /* [in] */ __RPC__in BYTE *pbBuffer,
            /* [in] */ QWORD qwOffset,
            /* [in] */ DWORD dwMaxDataSize,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSDataContainerCallback *pCallback,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE Write( 
            /* [in] */ __RPC__in BYTE *pbBuffer,
            /* [in] */ DWORD dwDataSize,
            /* [in] */ QWORD qwWritePosition,
            /* [in] */ __RPC__in_opt IWMSDataContainerCallback *pCallback,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetTransferParameters( 
            /* [in] */ QWORD qwDesiredOffset,
            /* [in] */ DWORD dwDesiredMinSize,
            /* [in] */ DWORD dwDesiredMaxSize,
            /* [out] */ __RPC__out QWORD *pqwOffset,
            /* [out] */ __RPC__out DWORD *pdwSize,
            /* [out] */ __RPC__out DWORD *pdwBufferAlignment) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE DoDataContainerExtendedCommand( 
            /* [in] */ __RPC__in LPWSTR szCommandName,
            /* [in] */ __RPC__in_opt IWMSCommandContext *pCommand,
            /* [in] */ DWORD dwCallFlags,
            /* [in] */ __RPC__in_opt IWMSDataContainerCallback *pCallback,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE FinishParsingPacketlist( 
            /* [in] */ __RPC__in_opt IWMSPacketList *pPacketList) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWMSDataContainerVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWMSDataContainer * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWMSDataContainer * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWMSDataContainer * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetContainerFormat )( 
            IWMSDataContainer * This,
            /* [out] */ __RPC__out GUID *pFormat);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDataSourcePlugin )( 
            IWMSDataContainer * This,
            /* [out] */ __RPC__deref_out_opt IWMSDataSourcePlugin **ppDataSource);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetInfo )( 
            IWMSDataContainer * This,
            /* [in] */ DWORD dwInfoValueId,
            /* [in] */ __RPC__in_opt IWMSDataContainerCallback *pCallback,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Read )( 
            IWMSDataContainer * This,
            /* [in] */ __RPC__in BYTE *pbBuffer,
            /* [in] */ QWORD qwOffset,
            /* [in] */ DWORD dwMaxDataSize,
            /* [in] */ DWORD dwFlags,
            /* [in] */ __RPC__in_opt IWMSDataContainerCallback *pCallback,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *Write )( 
            IWMSDataContainer * This,
            /* [in] */ __RPC__in BYTE *pbBuffer,
            /* [in] */ DWORD dwDataSize,
            /* [in] */ QWORD qwWritePosition,
            /* [in] */ __RPC__in_opt IWMSDataContainerCallback *pCallback,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetTransferParameters )( 
            IWMSDataContainer * This,
            /* [in] */ QWORD qwDesiredOffset,
            /* [in] */ DWORD dwDesiredMinSize,
            /* [in] */ DWORD dwDesiredMaxSize,
            /* [out] */ __RPC__out QWORD *pqwOffset,
            /* [out] */ __RPC__out DWORD *pdwSize,
            /* [out] */ __RPC__out DWORD *pdwBufferAlignment);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *DoDataContainerExtendedCommand )( 
            IWMSDataContainer * This,
            /* [in] */ __RPC__in LPWSTR szCommandName,
            /* [in] */ __RPC__in_opt IWMSCommandContext *pCommand,
            /* [in] */ DWORD dwCallFlags,
            /* [in] */ __RPC__in_opt IWMSDataContainerCallback *pCallback,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *FinishParsingPacketlist )( 
            IWMSDataContainer * This,
            /* [in] */ __RPC__in_opt IWMSPacketList *pPacketList);
        
        END_INTERFACE
    } IWMSDataContainerVtbl;

    interface IWMSDataContainer
    {
        CONST_VTBL struct IWMSDataContainerVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWMSDataContainer_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWMSDataContainer_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWMSDataContainer_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWMSDataContainer_GetContainerFormat(This,pFormat)	\
    ( (This)->lpVtbl -> GetContainerFormat(This,pFormat) ) 

#define IWMSDataContainer_GetDataSourcePlugin(This,ppDataSource)	\
    ( (This)->lpVtbl -> GetDataSourcePlugin(This,ppDataSource) ) 

#define IWMSDataContainer_GetInfo(This,dwInfoValueId,pCallback,qwContext)	\
    ( (This)->lpVtbl -> GetInfo(This,dwInfoValueId,pCallback,qwContext) ) 

#define IWMSDataContainer_Read(This,pbBuffer,qwOffset,dwMaxDataSize,dwFlags,pCallback,qwContext)	\
    ( (This)->lpVtbl -> Read(This,pbBuffer,qwOffset,dwMaxDataSize,dwFlags,pCallback,qwContext) ) 

#define IWMSDataContainer_Write(This,pbBuffer,dwDataSize,qwWritePosition,pCallback,qwContext)	\
    ( (This)->lpVtbl -> Write(This,pbBuffer,dwDataSize,qwWritePosition,pCallback,qwContext) ) 

#define IWMSDataContainer_GetTransferParameters(This,qwDesiredOffset,dwDesiredMinSize,dwDesiredMaxSize,pqwOffset,pdwSize,pdwBufferAlignment)	\
    ( (This)->lpVtbl -> GetTransferParameters(This,qwDesiredOffset,dwDesiredMinSize,dwDesiredMaxSize,pqwOffset,pdwSize,pdwBufferAlignment) ) 

#define IWMSDataContainer_DoDataContainerExtendedCommand(This,szCommandName,pCommand,dwCallFlags,pCallback,qwContext)	\
    ( (This)->lpVtbl -> DoDataContainerExtendedCommand(This,szCommandName,pCommand,dwCallFlags,pCallback,qwContext) ) 

#define IWMSDataContainer_FinishParsingPacketlist(This,pPacketList)	\
    ( (This)->lpVtbl -> FinishParsingPacketlist(This,pPacketList) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWMSDataContainer_INTERFACE_DEFINED__ */


#ifndef __IWMSDataContainerCallback_INTERFACE_DEFINED__
#define __IWMSDataContainerCallback_INTERFACE_DEFINED__

/* interface IWMSDataContainerCallback */
/* [helpstring][version][uuid][unique][object] */ 


EXTERN_C const IID IID_IWMSDataContainerCallback;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("2E34AB82-0D3D-11d2-9EEE-006097D2D7CF")
    IWMSDataContainerCallback : public IUnknown
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnGetInfo( 
            /* [in] */ HRESULT hr,
            /* [in] */ DWORD dwFlags,
            /* [in] */ QWORD qwInfoValue,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnRead( 
            /* [in] */ HRESULT hr,
            /* [in] */ DWORD dwActualBytesTransferred,
            /* [in] */ DWORD dwChangeType,
            /* [in] */ QWORD qwChangeParameter,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnWrite( 
            /* [in] */ HRESULT hr,
            /* [in] */ DWORD dwActualBytesTransferred,
            /* [in] */ QWORD qwContext) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE OnDoDataContainerExtendedCommand( 
            /* [in] */ HRESULT hr,
            /* [in] */ QWORD qwContext) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWMSDataContainerCallbackVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWMSDataContainerCallback * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWMSDataContainerCallback * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWMSDataContainerCallback * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnGetInfo )( 
            IWMSDataContainerCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ DWORD dwFlags,
            /* [in] */ QWORD qwInfoValue,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnRead )( 
            IWMSDataContainerCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ DWORD dwActualBytesTransferred,
            /* [in] */ DWORD dwChangeType,
            /* [in] */ QWORD qwChangeParameter,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnWrite )( 
            IWMSDataContainerCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ DWORD dwActualBytesTransferred,
            /* [in] */ QWORD qwContext);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *OnDoDataContainerExtendedCommand )( 
            IWMSDataContainerCallback * This,
            /* [in] */ HRESULT hr,
            /* [in] */ QWORD qwContext);
        
        END_INTERFACE
    } IWMSDataContainerCallbackVtbl;

    interface IWMSDataContainerCallback
    {
        CONST_VTBL struct IWMSDataContainerCallbackVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWMSDataContainerCallback_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWMSDataContainerCallback_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWMSDataContainerCallback_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWMSDataContainerCallback_OnGetInfo(This,hr,dwFlags,qwInfoValue,qwContext)	\
    ( (This)->lpVtbl -> OnGetInfo(This,hr,dwFlags,qwInfoValue,qwContext) ) 

#define IWMSDataContainerCallback_OnRead(This,hr,dwActualBytesTransferred,dwChangeType,qwChangeParameter,qwContext)	\
    ( (This)->lpVtbl -> OnRead(This,hr,dwActualBytesTransferred,dwChangeType,qwChangeParameter,qwContext) ) 

#define IWMSDataContainerCallback_OnWrite(This,hr,dwActualBytesTransferred,qwContext)	\
    ( (This)->lpVtbl -> OnWrite(This,hr,dwActualBytesTransferred,qwContext) ) 

#define IWMSDataContainerCallback_OnDoDataContainerExtendedCommand(This,hr,qwContext)	\
    ( (This)->lpVtbl -> OnDoDataContainerExtendedCommand(This,hr,qwContext) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWMSDataContainerCallback_INTERFACE_DEFINED__ */


#ifndef __IWMSDirectory_INTERFACE_DEFINED__
#define __IWMSDirectory_INTERFACE_DEFINED__

/* interface IWMSDirectory */
/* [helpstring][version][uuid][unique][object] */ 


EXTERN_C const IID IID_IWMSDirectory;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("6FA365E7-E8B9-437a-8C4B-6552DFBB0C57")
    IWMSDirectory : public IUnknown
    {
    public:
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetDataSourcePlugin( 
            /* [out] */ __RPC__deref_out_opt IWMSDataSourcePlugin **ppDataSource) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetName( 
            /* [out] */ __RPC__deref_out_opt LPOLESTR *pstrValue) = 0;
        
        virtual /* [helpstring] */ HRESULT STDMETHODCALLTYPE GetChildInfo( 
            /* [in] */ DWORD dwIndex,
            /* [out] */ __RPC__out WMSDirectoryEntryInfo *pInfo) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IWMSDirectoryVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IWMSDirectory * This,
            /* [in] */ __RPC__in REFIID riid,
            /* [iid_is][out] */ 
            __RPC__deref_out  void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IWMSDirectory * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IWMSDirectory * This);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetDataSourcePlugin )( 
            IWMSDirectory * This,
            /* [out] */ __RPC__deref_out_opt IWMSDataSourcePlugin **ppDataSource);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetName )( 
            IWMSDirectory * This,
            /* [out] */ __RPC__deref_out_opt LPOLESTR *pstrValue);
        
        /* [helpstring] */ HRESULT ( STDMETHODCALLTYPE *GetChildInfo )( 
            IWMSDirectory * This,
            /* [in] */ DWORD dwIndex,
            /* [out] */ __RPC__out WMSDirectoryEntryInfo *pInfo);
        
        END_INTERFACE
    } IWMSDirectoryVtbl;

    interface IWMSDirectory
    {
        CONST_VTBL struct IWMSDirectoryVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IWMSDirectory_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IWMSDirectory_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IWMSDirectory_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IWMSDirectory_GetDataSourcePlugin(This,ppDataSource)	\
    ( (This)->lpVtbl -> GetDataSourcePlugin(This,ppDataSource) ) 

#define IWMSDirectory_GetName(This,pstrValue)	\
    ( (This)->lpVtbl -> GetName(This,pstrValue) ) 

#define IWMSDirectory_GetChildInfo(This,dwIndex,pInfo)	\
    ( (This)->lpVtbl -> GetChildInfo(This,dwIndex,pInfo) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IWMSDirectory_INTERFACE_DEFINED__ */


/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif



